package main

import (
	"log"
	"os"
	"os/signal"
	"syscall"

	mcpinit "ai-mcp/mcp_init"
)

// main 函数是程序的入口点
// 功能：
//   - 初始化文件处理MCP服务
//   - 注册文件处理工具
//   - 启动所有服务
//   - 处理系统信号，实现优雅退出
func main() {
	// 初始化文件处理MCP服务实例
	filesMcp := mcpinit.NewFilesHandleMcp()

	// 启动所有服务并获取错误通道
	errChans := filesMcp.StartAllServices()

	// 启动goroutine监听错误通道
	for _, errChan := range errChans {
		go func(ch <-chan error) {
			if err, ok := <-ch; ok && err != nil {
				log.Printf("服务错误: %v\n", err)
			}
		}(errChan)
	}

	log.Println("文件处理MCP服务已成功启动")
	log.Println("按 Ctrl+C 停止服务...")

	// 设置信号处理，用于优雅退出
	sigChan := make(chan os.Signal, 1)
	signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)

	// 阻塞等待中断信号
	<-sigChan

	log.Println("正在优雅关闭服务...")
	// 停止所有服务
	filesMcp.StopAllServices()
	log.Println("所有服务已成功关闭")
}
